Пока поэлементные операции обрабатывают каждый элемент тензора независимо, паттерны редукции вводят зависимости между данными, при которых несколько входных элементов сводятся к одному выходному значению (например, сумма, максимум или среднее). Чтобы эффективно реализовать такие операции, необходимо преодолеть разрыв между логической двумерной структурой данных и их линейным представлением в памяти аппаратного обеспечения.
1. Отображение двумерной памяти
двумерные тензоры логически представляют собой сетки, но физически являются линейными в ОЗУ. Понимание строково-ориентированного против столбцово-ориентированного формата важно для определения того, проходит ли редукция по последовательным адресам памяти или требует строидного доступа.
2. Топология поэлементных операций против редукции
Одна копия матрицы представляет собой поэлементную операцию с соотношением входа к выходу $1:1$. В отличие от этого, редукция является много-к-одному ($N:1$) операцией, которая требует совместной накопления данных между потоками или последовательной обработки внутри блока.
3. Сжатие размерности
Редукции определяются осью оси операции. Сжатие по оси 1 (строки) против оси 0 (столбцы) кардинально меняет шаблон шагов памяти и коэффициент попадания в кэш аппаратного обеспечения.